In digital music synthesis, one of the basic functional units is the phase increment oscillator. A phase increment oscillator generates a "phase sawtooth," and then employs a "waveshaper" to shape the phase sawtooth into a sine wave, or other desired waveform. In most early hardware implementations, a lookup table in RAM or ROM was used to transform the phase sawtooth into the desired waveform. That approach had the virtues of generating waveforms of arbitrary shapes and being relatively cost effective compared to other means available, at least at that time. Because of these virtues, that approach remains common today.
However, in the maturing of the digital music synthesizer, certain waveforms have become standard, thus obviating the need for arbitrary waveform generation. For example, the popular Yamaha Corporation "OPL3" synthesizer chip has eight standard waveforms. Because the "OPL3" chip is used in Creative Technology Ltd's "SOUND BLASTER" sound card for IBM-compatible PCs, the popularity of those sound cards has made those eight waveforms a standard for compatible FM music synthesis.
Additionally, in the field of VLSI, the speed of computational circuits has increased by orders of magnitude. This enables the use of computational methods of generating waveforms as an improvement (in some cases) to the lookup table methods previously used, particularly where the size of the table must be relatively large to minimize inaccuracies and distortion.
For example, the well-known Taylor expansion for the cosine function: EQU cos (x)=1-x.sup.2 /2!-x.sup.4 /4!-x.sup.6 /6!
provides a basis for a computational approximation to a stored sine waveform, shifted in phase by .pi./2. Unfortunately, to achieve sufficient accuracy of less than a few percent total harmonic distortion (which is adequate for low cost music synthesis), several terms of this equation must be implemented when the required range is from -.pi. to .pi. (a single cycle of the cosine). Because each additional term requires an additional multiplication and addition, this approach becomes computation intensive, and thus costly.
Accordingly, while computational approaches such as these have been used instead of lookup tables, they require fairly complicated multiplications, additions and other functions. This in turn requires complex logic, if the logic is hardwired, or places a significant burden on a microprocessor, if a microprocessor is used instead. The tradeoff has been, therefore, between using large amounts of memory, as with a lookup table, or large amounts of computational capacity, as with a computational approach.